﻿using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Collections.Generic;

namespace Gerenciador
{
    class Arquivos
    {
        /*Método recursivo que retorna uma lista com todas as pastas, subpastas e arquivos de um diretório*/
        public List<String> Mapear(string Diretorio)
        {
            List<String> ArquivosRetornados = new List<String>();
 
            DirectoryInfo DirInfo = new DirectoryInfo(Diretorio);   /*Carregando o diretório*/
 
            /*Caso o diretório exista fazemos o mapeamento*/
            if (DirInfo.Exists)
            {
                /*Comando que busca e mapeia todos os arquivos dentro de uma pasta*/
                FileSystemInfo[] FilesInfo = DirInfo.GetFileSystemInfos();

                /*Varre o diretório atual e para cada iteração mapeia o nome de uma subpasta ou arquivo*/
                foreach (FileSystemInfo Files in FilesInfo)
                {
                    ArquivosRetornados.Add(Files.FullName);

                    /*Caso o método se depare com uma subpasta ele será chamado recursivamente para poder mapear 
                     * os diretórios e arquivos existentes dentro desta nova pasta*/
                    if (Files.Attributes == FileAttributes.Directory)
                        ArquivosRetornados.AddRange(Mapear(Files.FullName));

                }

                /*Retorna uma lista de strings com o mapeamento completo do diretório em questão*/
                return (ArquivosRetornados);   

            }
            else
            {
                /*Este retorno indica que a pasta em questão não existe e portanto não pode ser mapeada*/
                return (null);

            }
        
        }

        /*FIM*/

    }

}
